/* eslint-disable no-undef */
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import postcsspxtoviewport from 'postcss-px-to-viewport'
import fixReactVirtualized from 'esbuild-plugin-react-virtualized'
import path from 'path'

export default defineConfig({
    plugins: [react()],
    optimizeDeps: {
        esbuildOptions: {
            plugins: [fixReactVirtualized]
        }
    },
    css: {
        postcss: {
            plugins: [
                postcsspxtoviewport({
                    viewportWidth: 750, // 设计稿的视口宽度
                    viewportUnit: 'vw', // 转换后的视口单位
                    unitPrecision: 5, // 单位转换后保留的小数位数
                    propList: ['*'], // 可以从 px 转换为 vw 的 CSS 属性列表
                    selectorBlackList: [], // 黑名单中的选择器将忽略转换
                    minPixelValue: 1, // 小于或等于`1px`不转换为视口单位
                    mediaQuery: false, // 允许在媒体查询中转换`px`
                    exclude: /node_modules\/antd-mobile/ // 忽略某些文件夹下的文件或特定文件
                })
            ]
        }
    },
    server: {
        host: '0.0.0.0',
        proxy: {
            // 使用 '/api' 作为匹配前缀的代理
            '/api': {
                target: 'http://47.121.180.100/api', // 后端服务的基础 URL
                changeOrigin: true, // 需要虚拟托管站点，以便可以接收从不同源发起的请求
                rewrite: (path) => path.replace(/^\/api/, '') // 重写 URL 路径，去掉路径中的 '/api'
            }
        }
    },
    // 路径别名的配置
    resolve: {
        alias: {
            '@': path.resolve(__dirname, './src'),
            '@comp': path.resolve(__dirname, './src/components'),
            '@assets': path.resolve(__dirname, './src/assets'),
            '@server': path.resolve(__dirname, './src/server'),
            '@utils': path.resolve(__dirname, './src/utils'),
            '@api': path.resolve(__dirname, './src/server/api'),
            '@store': path.resolve(__dirname, './src/store'),
            '@pages': path.resolve(__dirname, './src/pages'),
            '@hooks': path.resolve(__dirname, './src/hooks')
        }
    }
})
